_require local "../../../../basis.smi"
_require local "../../../../reify.smi"
_require local "../../../extensions/debug/main/Bug.smi"
_require local "../../../libs/ids/main/LocalID.smi"
_require local "../../../data/symbols/main/Loc.smi"
_require local "../../../data/symbols/main/RecordLabel.smi"
_require local "../../../data/symbols/main/Symbol.smi"
_require local "../../../../smlnj-lib/Util/binary-map-fn.smi"
_require local "../../../../smlnj-lib/Util/binary-set-fn.smi"
_require local "../../../../smlnj-lib/Util/ord-key-sig.sml"
_require local "../../../data/types/main/TyAlphaRename.smi"
_require       "../../../data/types/main/Types.ppg.smi"
_require local "../../../data/types/main/DynamicKindUtils.smi"
_require local "../../../data/types/main/TypesBasics.smi"
_require local "../../../data/builtin/main/BuiltinTypes.smi"
_require "../../../compilerIRs/typedcalc/main/TypedCalc.ppg.smi"
_require "../../../compilerIRs/typedcalc/main/TypedCalcUtils.smi"
_require "../../../compilerIRs/typedlambda/main/TypedLambda.ppg.smi"
_require "../../../compilerIRs/recordcalc/main/RecordCalc.ppg.smi"
_require "../../analyzefiles/main/Analyzers.smi"
_require local "./OverloadKind.smi"
_require local "./RecordKind.smi"
_require local "./ReifyKind.smi"
_require local "./TagKind.smi"
_require local "./SizeKind.smi"
_require local "./DynamicExistInstance.smi"


structure RecordCompilation =
struct
  val makeUerlelvelPrimitiveExternDecls
      : (Types.exVarInfo * Types.provider) list ->  RecordCalc.rcdecl list
  val compile : TypedLambda.tldecl list -> RecordCalc.rcdecl list
end
